Management of different types of resources (such as software components, applications or monitoring activities) is a critical issue in a data processing system with a distributed architecture; this problem is particular acute for resources that have a high level of complexity or are dispersed across a large number of installations. A typical example of a resource management environment is a software distribution application, which is used to upgrade software products installed on a network of workstations.
The resource management environments known in that art are based on an enforcement model (also known as manager/workers model). In this model, the resource management process is entirely controlled by an authority residing at a central site of the system. The authority defines the desired target state of every resource, which is directly controlled by a corresponding subject distributed in the system. The authority accesses a central repository storing the (assumed) current state for each pair resource/subject, and determines the management actions required to bring the resource to the target state. The management actions are then enforced remotely from the authority on the subject (which is totally passive).
For example, in the software distribution application cited above the authority defines packages including instructions specifying the actions to be carried out on the workstations for installing or removing selected software products. The package is transmitted to the workstations, and the corresponding instructions are interpreted so as to enforce the desired software configuration.
A drawback of the resource management environments known in the art is the lack of any kind of cooperation between the authority and the subjects. This lack of cooperation may bring about inconsistencies when the subjects change their configuration out of the control of the authority. For example, in the software distribution application the instructions of the package are typically conditioned to a series of hardware parameters of the workstation; in this case, a hardware upgrade of the target workstation may change the result of the evaluation of the conditions defined in the package, thereby making the software products installed on the workstation not consistent with its hardware configuration any longer. This lack of cooperation is unacceptable in high dynamic environments, wherein the configuration of the subjects changes frequently.
Moreover, all the proposed solutions require the authority to maintain information about the location of all the subjects; at the same time, the authority must handle the communication with every subject directly. This drawback is exacerbated in systems having a very high number of subjects, especially when they can change their spatial location freely.
One further problem may arise when the subjects are not available or are off-line. As a matter of fact, the lack of autonomy on the part of the subject requires that each management action must be completed within a pre-set deadline (with the need of fault tolerance, retry, check-point and restart mechanisms). As a consequence, the complexity of the resource management environment is strongly increased.
Additional complexity is added by the need of implementing different dependency schemes amongst the resources to be installed on every subject. This requirement involves the definition of a workflow implying some sort of conditioning or sequencing in the configuration of the resources. For example, in the software distribution application the installation of a product is a pre-requisite for the installation of a corresponding patch; as a consequence, the package to the distributed to the subjects must include quite complex instructions (in order to ensure the correctness of the resulting configuration).